﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using MoviTiendas.Interfaz;
using MoviTiendas.Logica;

namespace MoviTiendas.Interfaz
{
    /**
     * Celda con la imagen de disclosure
     */
    public partial class CeldaDisclosure : UserControl
    {
        // ------------------------------------------------------------------------------------
        // Atributos
        // ------------------------------------------------------------------------------------

        /**
         * Página dueña de la celda
         */
        public Object pagina;

        /**
         * Nombre del objeto relacionado con la celda
         */
        public String nombre;

        /**
         * Lista de objetos relacionados con la celda
         */
        public Object lista;

        /**
         * Número del pivot dueño de la celda. Usado sólamente cuando la página dueña es PaginaPrincipal
         */
        public int pivot;


        // ------------------------------------------------------------------------------------
        // Constructor
        // ------------------------------------------------------------------------------------

        /**
         * Constructor de la clase
         * @nPagina - Página encargada de manejar la celda
         * @nNombre - Nombre del objeto relacionado con la celda
         * @nLista - Lista de objetos relacionados con la celda
         * @nPivot - Número del pivot
         */
        public CeldaDisclosure(Object nPagina, String nNombre, Object nLista, int nPivot)
        {
            InitializeComponent();            
            pagina = nPagina;
            nombre = nNombre;
            lista = nLista;
            pivot = nPivot;

            btnObjeto.Content = nombre;
        }

        // ------------------------------------------------------------------------------------
        // Métodos generales
        // ------------------------------------------------------------------------------------


        /**
         * Agrega un objeto que recibe como parámetro a la lista de objetos
         * @obj - objeto que se quiere agregar a la lista
         */
        public void agregarObjetoALista(Object obj)
        {
            if (pagina.GetType().ToString().Equals("MoviTiendas.Interfaz.PaginaCategorias"))
            {
                Categoria cat = obj as Categoria;
                List<Categoria> li = lista as List<Categoria>;

                li.Add(cat);
            }

            else if (pagina.GetType().ToString().Equals("MoviTiendas.Interfaz.PaginaSubcategorias"))
            {
                SubCategoria cat = obj as SubCategoria;
                List<SubCategoria> li = lista as List<SubCategoria>;

                li.Add(cat);
            }
        }


        // ------------------------------------------------------------------------------------
        // Métodos manejadores de eventos
        // ------------------------------------------------------------------------------------


        private void btnObjeto_Click(object sender, RoutedEventArgs e)
        {
            if ((pagina.GetType().ToString().Equals("MoviTiendas.Interfaz.PaginaPrincipal")))
            {
                PaginaPrincipal p = pagina as PaginaPrincipal;
                //Pivot Mi perfil
                if (pivot == 1)
                    p.seleccionarCeldaEnPerfil(this);
                //Pivot Listas
                if(pivot==4)
                    p.seleccionarCeldaEnListas(this);

                //Pivot Carritos
                else if (pivot == 5)
                    p.seleccionarCeldaEnCarritos(this);
            }
            else if (pagina.GetType().ToString().Equals("MoviTiendas.Interfaz.PaginaCategorias"))
            {
                PaginaCategorias p = pagina as PaginaCategorias;
                p.seleccionarCelda(this);
            }
            else if (pagina.GetType().ToString().Equals("MoviTiendas.Interfaz.PaginaSubcategorias"))
            {
                PaginaSubcategorias p = pagina as PaginaSubcategorias;
                p.seleccionarCelda(this);
            }
        }
    }
}
